package com.lyc.lojbackendjudgeservice.judge.strategy;


import com.lyc.lojbackendmodel.model.codesandbox.JudgeInfo;
import com.lyc.lojbackendmodel.model.dto.question.JudgeCase;
import com.lyc.lojbackendmodel.model.entity.Question;
import com.lyc.lojbackendmodel.model.entity.QuestionSubmit;
import lombok.Data;

import java.util.List;

/**
 * 上下文（用于定义传递的参数）
 */
@Data
public class JudgeContext {

    /**
     * 判题信息（执行信息、执行时间、消耗内存）
     */
    private JudgeInfo judgeInfo;

    /**
     * 题目的输入用例
     */
    private List<String> inputList;

    /**
     * 代码沙箱执行的输出用例
     */
    private List<String> outputList;

    /**
     * 测试用例的输入和输出
     */
    private List<JudgeCase> judgeCases;

    /**
     * 题目
     */
    private Question question;

    /**
     * 题目提交对象
     */
    private QuestionSubmit questionSubmit;

    /**
     * 是否是用户测试(0-不是，1-是)
     */
    private Integer isManual;

    /**
     * 判题主状态（1->编译&运行成功，2->编译错误，3->编译成功但是运行错误）
     */
    private Integer status;

    /**
     * 代码沙箱返回的信息(编译错误会返回)
     */
    private String message;

    /**
     * 代码沙箱返回的详细信息
     */
    private String errorMessage;
}
